/***************************************************
> Copyright (C) 2024 ==KINGYI== All rights reserved.
> File Name: main.c
> Author:cjy
> Mail: 
> Created Time: 2024年08月22日 星期四 17时17分21秒
***************************************************/
#include "recv.h"
#include <time.h>     // 包含时间相关的函数
#include "send_data.h"
#include <unistd.h>
// 循环发数据
typedef struct socke_type
{
    char soc[5];
}ST;
int main(int argc,const char* argv[])
{
    ST socke_type;
    int sock = 0;
    int ret = 0;

    USE userinfo;
    memset(&userinfo,0,sizeof(userinfo));

    DAT detail;
    memset(&detail,0,sizeof(detail));

    WP dat;
    memset(&dat,0,sizeof(dat));
    char *dest = NULL;
    int arr[100] = {0};

    //连接网络
    struct sockaddr_in serAddr;
    memset(&serAddr, 0, sizeof(serAddr));
    serAddr.sin_family = AF_INET;
    serAddr.sin_port = htons(6501);
    serAddr.sin_addr.s_addr = inet_addr("192.168.48.128");

    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == -1) {
        perror("sock");
        exit(-1);
    }

    ret = connect(sock, (struct sockaddr*)&serAddr, sizeof(serAddr));
    if (ret == -1) {
        perror("connect");
        exit(-1);
    }

    strcpy(socke_type.soc,"fd2");
    ret = send(sock,&socke_type,sizeof(ST),0);
    if (ret == -1){
        printf("send---ok");
    }


    // 接收水表id存储
    int i = 0;
    while(1){
        memset(&dat,0,sizeof(dat));
        dat = recv_water_pump(sock);
        arr[i] = dat.id;
        if(dat.id == 0){
            break;
        }
        i++;
    }

    // 定义一个种子
    srand((float)time(0));

    // 定义一个 time_t 类型的变量，用于存储当前时间
    time_t rawtime;
    // 定义一个指向 tm 结构体的指针，用于存储本地时间信息
    struct tm * timeinfo;

    while(1){
        i = 0;
        while(arr[i] != 0){

            // 获取当前时间信息
            time(&rawtime);   // 调用 time 函数，将当前时间存入 rawtime 变量

            // 将 rawtime 转换为本地时间
            timeinfo = localtime(&rawtime); // 使用 localtime 函数将时间转换为本地时间



            //定随机数
            detail.temperature = rand()%50;
            // 液位
            detail.liquid_level = rand()%20;
            // 流量计
            detail.flow_rate = rand()%20;
            // 电动球阀 阀门打开程度
            detail.valve_state = rand()%100;
            // 负压传感器
            detail.negative_pressure = rand()%20;
            // 压力传感器
            detail.pressure = rand()%20;
            // 时间
            sprintf(detail.time,"%04d-%02d-%02d %02d:%02d:%02d",
               timeinfo->tm_year + 1900, // C 语言中年份是以 1900 为基准的，所以需要加上 1900
               timeinfo->tm_mon + 1,     // 月份是从 0 开始的，所以需要加 1
               timeinfo->tm_mday,        // 当前日期
               timeinfo->tm_hour,        // 当前小时
               timeinfo->tm_min,         // 当前分钟
               timeinfo->tm_sec);        // 当前秒数
            detail.pump_id = arr[i];

            send_details(&detail,sock);
			sleep(2);
            i++;
        }
        sleep(5);
    }

return 0;

}


